/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.delta.dao;

import br.com.delta.modelo.Compra;
import br.com.delta.util.ConnectionFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author watilan
 */
public class CompraDAO {
    
    private Connection conn;
    
    public CompraDAO() throws Exception {
        try {
            this.conn = ConnectionFactory.getConnection();
        } catch (Exception e) {
            throw new Exception("Erro: "
                    + "\n" + e.getMessage());
        }
        
    }
        public void salvar(Compra objCompra) throws Exception {
        PreparedStatement ps = null;
        if (objCompra == null) {
            throw new Exception("O valor passado não pode ser nulo");
        }
        try {
            String SQL = "INSERT INTO compras (nome_cliente, tipo_cliente, produto,valor_unitario,quantidade,valor_desconto,valor_total) "
                    + "values (?,?,?,?,?,?,?)";
            ps = this.conn.prepareStatement(SQL);
            ps.setString(1, objCompra.getNome_cliente());
            ps.setString(2, objCompra.getTipo_cliente());
            ps.setString(3, objCompra.getProduto());
            ps.setDouble(4, objCompra.getValor_unitario());
            ps.setDouble(5, objCompra.getQuantidade());
            ps.setDouble(6, objCompra.getValor_desconto());
            ps.setDouble(7, objCompra.getValor_total());       
            ps.executeUpdate();
        } catch (SQLException sqle) {
            throw new Exception("Erro ao inserir dados " + sqle);
        } finally {
            ConnectionFactory.closeConnection(this.conn, ps);

        }
}
            
public void atualizar(Compra objCompra) throws Exception {
        PreparedStatement ps = null;
        if (objCompra == null) {
            throw new Exception("O valor passado não pode ser nulo");
        }
        try {
            String SQL = "INSERT INTO compras (nome_cliente, tipo_cliente, produto,valor_unitario,quantidade,valor_desconto,valor_total) "
                    + "values (?,?,?,?,?,?,?)";
            ps = this.conn.prepareStatement(SQL);
            ps.setString(1, objCompra.getNome_cliente());
            ps.setString(2, objCompra.getTipo_cliente());
            ps.setString(3, objCompra.getProduto());
            ps.setDouble(4, objCompra.getValor_unitario());
            ps.setDouble(5, objCompra.getQuantidade());
            ps.setDouble(6, objCompra.getValor_desconto());
            ps.setDouble(7, objCompra.getValor_total());       
            ps.executeUpdate();
        } catch (SQLException sqle) {
            throw new Exception("Erro ao atualizar dados: " + sqle);
        } finally {
            ConnectionFactory.closeConnection(this.conn, ps);
        }
    }

  
public List todosCompra() throws Exception {
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            ps = this.conn.prepareStatement("select * from compras");
            rs = ps.executeQuery();
            List<Compra> list = new ArrayList<Compra>();
            while (rs.next()) {
                Integer id = rs.getInt(1);
                String nome_cliente = rs.getString(2);
                String tipo_cliente = rs.getString(3);
                String produto = rs.getString(4);
                double valor_unitario = rs.getDouble(5);
                double quantidade = rs.getDouble(6);
                double valor_desconto = rs.getDouble(7);
                double valor_total = rs.getDouble(8);
                
                
                list.add(new Compra(id, nome_cliente, tipo_cliente, produto, valor_unitario, quantidade, valor_desconto, valor_total));
            }
            return list;
        } catch (SQLException sqle) {
            throw new Exception(sqle);
        } finally {
            ConnectionFactory.closeConnection(this.conn, ps, rs);
        }
    }
    public void excluir(Compra objCompra) throws Exception {
    PreparedStatement ps = null;
    if (objCompra == null) {
        throw new Exception("O valor passado não pode ser nulo");
    }
    try {
        ps = this.conn.prepareStatement("delete from compras where id=?");
        ps.setInt(1, objCompra.getId());
        ps.executeUpdate();
    } catch (SQLException sqle) {
        throw new Exception("Erro ao excluir dados:" + sqle);
    } finally {
        ConnectionFactory.closeConnection(this.conn, ps);
    }
    }
  
        
}
